<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>


    function parent() {
        this.name1 = "p";
    }
    function child() {
        this.name2 = "c";
        parent.call(this);//原型继承
    }
    //child.prototype = new parent();//另一种原型继承方式
    var c = new child();
    //alert(c.name1);//原型链
    //alert("child有属性name1吗？" + (child.hasOwnProperty("name1")?"有":"没有"));//没有

    function car() {

    }

    function bus() {

    }

    //bus.prototype = car;//该方式无效
    bus.prototype = new car();//bus的原型指向car的一个实例，这样有效
    bus.prototype.sayBus = function () {
        alert("bus");
    }


    car.prototype.sayCar = function () {
        alert("car");
    }
    //bus.prototype = new car();//如果原型继承放在此处，sayCar方法定义在car原本的原型中，它原本的原型将被覆盖而不具有sayCar方法
    var b = new bus();
    b.sayCar();
    b.sayBus();
</script>
</body>
</html>